深度学习最简单入门手写数字识别
深度学习
2024-03-29 02:30
1033
联系人:
联系方式:
阅读提示:本文共计约4849个文字,预计阅读时间需要大约13分钟,由本站编辑整理创作于2023年11月08日09时33分56秒。
深度学习是人工智能领域的一个重要分支,它通过模拟人脑神经网络的工作方式,自动学习数据中的特征和规律。本文将介绍一个深度学习的简单入门实例——使用Keras库进行手写数字识别。
一、准备环境
- 安装Python3.5-3.7版本,推荐使用Anaconda集成环境。
- 安装TensorFlow和Keras库,可以使用pip命令进行安装:
pip install tensorflow keras。
二、导入所需库
import numpy as np
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras.utils import np_utils
三、加载数据集
MNIST是一个常用的手写数字识别数据集,包含60000个训练样本和10000个测试样本。我们将使用Keras内置的函数加载这个数据集。
(X_train, y_train), (X_test, y_test) = mnist.load_data()
四、数据预处理
由于原始数据为图像格式,我们需要对其进行预处理,以便神经网络能够更好地识别和学习。
# 将图像数据归一化至0-1之间
X_train = X_train.reshape(60000, 28, 28, 1)
X_test = X_test.reshape(10000, 28, 28, 1)
X_train = X_train.astype('float32') / 255
X_test = X_test.astype('float32') / 255
# 将标签数据转换为one-hot编码
y_train = np_utils.to_categorical(y_train, 10)
y_test = np_utils.to_categorical(y_test, 10)
五、构建模型
接下来,我们构建一个简单的卷积神经网络(CNN)模型。
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))
六、编译模型
最后,我们使用Adam优化器、交叉熵损失函数和准确率评估指标来编译模型。
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
七、训练模型
现在我们可以开始训练模型了。设置训练轮数为10轮,每轮迭代次数为100次。
model.fit(X_train, y_train, epochs=10, batch_size=100, verbose=1)
八、评估模型
在训练完成后,我们可以使用测试数据集对模型进行评估。
score = model.evaluate(X_test, y_test, verbose=1)
print('Test accuracy:', score[1])
九、预测新数据
为了验证模型的实际效果,我们可以随机选择一个测试样本进行预测。
rand_index = np.random.randint(0, len(X_test))
print('Predicted digit:', np.argmax(model.predict(X_test[rand_index].reshape(1, 28, 28, 1))))
通过以上步骤,我们已经完成了一个简单的深度学习实例——手写数字识别。这只是一个非常基础的例子,深度学习还有很多其他有趣和应用广泛的方向等待我们去探索。
本站涵盖的内容、图片、视频等数据系网络收集,部分未能与原作者取得联系。若涉及版权问题,请联系我们进行删除!谢谢大家!
阅读提示:本文共计约4849个文字,预计阅读时间需要大约13分钟,由本站编辑整理创作于2023年11月08日09时33分56秒。
深度学习是人工智能领域的一个重要分支,它通过模拟人脑神经网络的工作方式,自动学习数据中的特征和规律。本文将介绍一个深度学习的简单入门实例——使用Keras库进行手写数字识别。
一、准备环境
- 安装Python3.5-3.7版本,推荐使用Anaconda集成环境。
- 安装TensorFlow和Keras库,可以使用pip命令进行安装:
pip install tensorflow keras。
二、导入所需库
import numpy as np
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras.utils import np_utils
三、加载数据集
MNIST是一个常用的手写数字识别数据集,包含60000个训练样本和10000个测试样本。我们将使用Keras内置的函数加载这个数据集。
(X_train, y_train), (X_test, y_test) = mnist.load_data()
四、数据预处理
由于原始数据为图像格式,我们需要对其进行预处理,以便神经网络能够更好地识别和学习。
# 将图像数据归一化至0-1之间
X_train = X_train.reshape(60000, 28, 28, 1)
X_test = X_test.reshape(10000, 28, 28, 1)
X_train = X_train.astype('float32') / 255
X_test = X_test.astype('float32') / 255
# 将标签数据转换为one-hot编码
y_train = np_utils.to_categorical(y_train, 10)
y_test = np_utils.to_categorical(y_test, 10)
五、构建模型
接下来,我们构建一个简单的卷积神经网络(CNN)模型。
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))
六、编译模型
最后,我们使用Adam优化器、交叉熵损失函数和准确率评估指标来编译模型。
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
七、训练模型
现在我们可以开始训练模型了。设置训练轮数为10轮,每轮迭代次数为100次。
model.fit(X_train, y_train, epochs=10, batch_size=100, verbose=1)
八、评估模型
在训练完成后,我们可以使用测试数据集对模型进行评估。
score = model.evaluate(X_test, y_test, verbose=1)
print('Test accuracy:', score[1])
九、预测新数据
为了验证模型的实际效果,我们可以随机选择一个测试样本进行预测。
rand_index = np.random.randint(0, len(X_test))
print('Predicted digit:', np.argmax(model.predict(X_test[rand_index].reshape(1, 28, 28, 1))))
通过以上步骤,我们已经完成了一个简单的深度学习实例——手写数字识别。这只是一个非常基础的例子,深度学习还有很多其他有趣和应用广泛的方向等待我们去探索。
本站涵盖的内容、图片、视频等数据系网络收集,部分未能与原作者取得联系。若涉及版权问题,请联系我们进行删除!谢谢大家!
